package org.ccay.security.dao;

import java.util.List;
import java.util.Set;

import org.ccay.core.request.IApplicationPrincipal;
import org.ccay.security.entity.Permission;
import org.ccay.security.entity.User;
import org.ccay.security.vo.ProgramRolesDTO;

public interface ISecurityInfoDao {
	/**
	 * 通过用户名查询用户信息含加密后密码机盐
	 * @param Principal 登录时提供的主题认证标识
	 * @return 匹配的用户或空
	 */
	User findAuthenticationInfo(User principal);
	/**
	 * 查询权限信息
	 * @param application 当前应用信息
	 * @param principal 已认证的主体标识
	 * @return 权限信息集合
	 */
	Set<Permission> findPermissions(List<Long> roleIds, IApplicationPrincipal application);
	/**
	 * 查找范围及角色
	 * @param principal 已认证的主体标识
	 * @param application 当前应用信息
	 * @return
	 */
	List<ProgramRolesDTO> findProgramRoles(User principal, IApplicationPrincipal application);
	
}
